package com.powernode.service;

import com.powernode.dto.PageResult;
import com.powernode.param.ProductQueryParam;
import com.powernode.entity.Product;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 商品 服务类
 * </p>
 *
 * @author Juice
 * @since 2023-01-11
 */
public interface ProductService extends IService<Product> {

    /**
    * 商品分页查询
    */
    PageResult<Product> pageQuery(ProductQueryParam param);
    /**
    * 根据id获取单个商品详情
    */
    Product getProductById(Long productId);

    /**
    * 更新单个商品信息，如果商品所属的商品分类不存在或者不属于三级分类则不允许删除
    */
    Product updateProduct(Product product);

    /**
    * 根据商品id更新商品状态（只允许0-未上架，1-上架）
     * 更新状态之前先判断商品主图，详情图，商品详情是否录入，没有则不允许更新状态
    */
    Product updateProductStatus(Long productId, Integer status);

    /**
    * 商品新增
    */
    Product saveProduct(Product product);
    /**
    * 根据商品id删除单个商品（已上架的商品不允许删除）
    */
    boolean removeProductById(Long productId);

    /**
     * 根据商品id获取商品集合
     */
    List<Product> listProductsByIds(List<Long> productIds);

    /**
     * 增加库存
     */
    boolean incrStock(Long productId, Integer num);

    /**
     * 减少库存
     */
    boolean decrStock(Long productId, Integer num);
}
